iT邦幫忙

0

[ASP.NET MVC] 客製 ActionFilterAttribute

  • 分享至 

  • xImage
  •  

ASP.NET MVC 提供 ActionFilterAttribute 抽象類別,讓開發人員在 Action 之前或之後執行自訂涵式,例如寫入LOG。

  1. ActionFilterAttribute 的命名是在自訂名稱尾端加上「Attribute」
    例如:WebAuthorizeAttribute
public class NameController : Controller
{
    [WebAuthorize]
    public ActionResult Index()
    {
        return View();
    }
}
  1. 自訂類別繼承 ActionFilterAttribute
    ActionFilterAttribute 有四種方法
    執行Action之前執行:OnActionExecuting
    執行Action之後執行:OnActionExecuted
    執行Action Result之前執行:OnResultExecuting
    執行Action Result之後執行:OnResultExecuted
sealed class WebAuthorizeAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //欲執行的工作
    }
}
  1. 延伸討論
    AttributeUsage用來規範ActionFilterAttribute的使用方式,
    共有三個屬性,藉由定義下列參數來設定。
    ValidOn
    可以指定只能放在什麼屬性前面,例如類別(Class)或是全部(All)。
    AllowMultiple
    是否允許在同一個涵式上重複附加多個。
    Inherited
    是否可由衍生類別繼承,以及覆寫成員。
    備註:如下繼承若為 True,實際行為會取決於AllowMultiple屬性的值
    繼承:True,AllowMultiple:False,结果:衍生類別覆蓋類別
    繼承:True,AllowMultiple:True ,结果:衍生類別與類別共存
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]
sealed class WebAuthorizeAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //欲執行的工作
    }
}

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言